/**
 * Created by hjqi on 2016/2/12.
 */

var base = require('./gitBase');
var util = require('util');
var httpRequest = require('../common/httpRequest').httpRequest;
var _req = new httpRequest();
module.exports = bitbucket;

function bitbucket(){
    this._getUserUrl = 'https://api.bitbucket.org/2.0/user';
    this._authorizationHeader = {'Authorization':'Bearer '};
    base.call(this);
}

bitbucket.prototype._parseUserInfo = function(userInfo){
    console.log(userInfo);
    var _infoObj = JSON.parse(userInfo);
    var _retObj = {};
    _retObj.repoUrl = _infoObj.links.repositories.href;
    //_retObj.id = _infoObj.username;
    return _retObj;
}

bitbucket.prototype._parseRepoInfo = function(repoInfo){
    var _infoObjlst = JSON.parse(repoInfo);
    var _retlst = [];
    var me = this;
    _infoObjlst.values.forEach(function(one){
        _retlst.push(me._parseRepoItem(one));
    });
    return _retlst;
}

bitbucket.prototype._parseTagInfo = function(tagInfo){
    var _infoObj = JSON.parse(tagInfo);
    var _retlst = [];
    for(var _ver in _infoObj)
        _retlst.push(_ver);
    return _retlst;
}

bitbucket.prototype._getTagUrl = function(full_name){
    return  'https://api.bitbucket.org/1.0/repositories/'+full_name+'/tags';
}

bitbucket.prototype._parseRepoItem = function(repoItem){
    var _retObj = {};
    //_retObj.id = repoItem.owner.username;
    _retObj.name = repoItem.name;
    _retObj.full_name = repoItem.full_name;
    _retObj.description = repoItem.description;
    _retObj.git_url = repoItem.links.clone[0].href;
    _retObj.ssh_url = repoItem.links.clone[1].href;
    _retObj.clone_url = repoItem.links.clone[0].href;
    _retObj.tags_url = repoItem.tags_url;
    _retObj.private = repoItem.is_private;
    _retObj.type = 'bitbucket';
    return _retObj;
}

bitbucket.prototype._processErr = function(result){
    var _ret = {};
    try{
        var _err_json = JSON.parse(result);
        if(_err_json.error !== undefined){
            if(_err_json.error.message.indexOf('Access token expired') !== -1){
                _ret.code = 401;
                _ret.msg = 'token error';
            }
        }else{
            _ret.code = 400;
            _ret.msg = result;
        }
    }catch(e){
        _ret.code = 400;
        _ret.msg = result;
    }

    return _ret;
}

util.inherits(bitbucket,base);